"""
@name : homework
@author : struggling yan
@projectname: 22-7-13高阶函数
"""
################1.使用reduce 取出lst里的全是数字的转换成整型输出  --》12349
from functools import reduce
list1 = ['a','1','2bb','234','','9','3.0']
def func1(x, y):
    if str(x).isdigit() and str(y).isdigit():
        #都是数字就当用字符串拼接在一起
        return str(x) + str(y)
    elif str(x).isdigit():
        return int(x)  #整型输出
    elif str(y).isdigit():
        return int(y)
print(reduce(func1, list1))



#################2.有以下列表:list=[7, -8, 5, 4, 0, -2, -5]
# • 正数在前负数在后 • 整数从小到大 • 负数从大到小
list2=[7, -8, 5, 4, 0, -2, -5]
print(sorted(list2, key=lambda x: x*-10 if x <= 0 else x))



#################3.这是一个字符串排序，排序规则：小写<大写<奇数<偶数
# s = 'asdf234GDSdsf23'  排序:小写-大写-奇数-偶数 • 原理：先比较元组的第一个值，FALSE
from functools import reduce
s = 'asdf234GDSdsf23'
s2 = "".join(sorted(s, key=lambda x: (x.isdigit(), x.isdigit() and int(x) % 2 == 0, x.isupper(), x)))
print(s2)
